/**
 * 🔒 PPH系统核心配置文件
 * 
 * ⚠️ 重要提醒：
 * 1. 修改此文件前请先备份
 * 2. 修改后必须重启前端服务
 * 3. 生产环境修改需要审批
 */

// 🌐 网络配置
export const NETWORK_CONFIG = {
  // 后端服务端口配置
  BACKEND_PORTS: {
    PRIMARY: 3011,    // 主端口 - 生产环境标准端口
    // 移除备用端口 - 统一使用3011端口
  },
  
  // 前端服务端口
  FRONTEND_PORT: 3010,
  
  // 连接超时配置
  TIMEOUT: {
    CONNECTION: 5000,   // 连接超时 5秒
    REQUEST: 30000,     // 请求超时 30秒
    RETRY_DELAY: 1000,  // 重试间隔 1秒
    MAX_RETRIES: 3,     // 最大重试次数
  },
  
  // 健康检查配置
  HEALTH_CHECK: {
    INTERVAL: 30000,    // 健康检查间隔 30秒
    ENDPOINT: '/api/health',
    TIMEOUT: 3000,      // 健康检查超时 3秒
  }
} as const;

// 🎯 功能开关配置
export const FEATURE_FLAGS = {
  // 页面功能开关
  PAGES: {
    DATA_ENTRY: {
      ENABLED: true,
      EXPORT: false,      // 数据录入页面无导出功能
    },
    RECORD_MAINTENANCE: {
      ENABLED: true,
      EXPORT: false,      // ✅ 记录维护页面无导出功能
      EDIT: true,
      DELETE: true,
    },
    TARGET_MANAGEMENT: {
      ENABLED: true,
      EXPORT: true,       // ✅ 目标值管理有导出功能
      IMPORT: false,
    },
    ESTIMATE_MANAGEMENT: {
      ENABLED: true,
      EXPORT: true,       // ✅ 预估值管理有导出功能
      IMPORT: false,
    },
    REPORTS: {
      ENABLED: true,
      EXPORT: true,       // ✅ 报表分析有导出功能
    },
    SYSTEM_SETTINGS: {
      ENABLED: true,
      EXPORT: true,       // ✅ 系统设置有导出功能
      IMPORT: true,       // ✅ 系统设置有导入功能
    },
  },
  
  // 全局功能开关
  GLOBAL: {
    OFFLINE_MODE: true,     // 离线模式支持
    AUTO_SAVE: true,        // 自动保存
    DEBUG_MODE: false,      // 调试模式
    PERFORMANCE_MONITOR: true, // 性能监控
  }
} as const;

// 🔧 开发环境配置
export const DEV_CONFIG = {
  // 热重载配置
  HOT_RELOAD: true,
  
  // 调试配置
  DEBUG: {
    NETWORK: true,        // 网络调试
    PERFORMANCE: false,   // 性能调试
    VERBOSE_LOGGING: true, // 详细日志
  },
  
  // Mock数据配置
  MOCK: {
    ENABLED: false,       // 禁用Mock数据
    DELAY: 500,          // Mock延迟
  }
} as const;

// 🚨 安全配置
export const SECURITY_CONFIG = {
  // API安全
  API: {
    REQUIRE_AUTH: false,  // 当前版本暂不需要认证
    RATE_LIMIT: 100,     // 每分钟最大请求数
  },
  
  // 数据验证
  VALIDATION: {
    STRICT_MODE: true,    // 严格验证模式
    SANITIZE_INPUT: true, // 输入数据清理
  }
} as const;

// 📊 性能配置
export const PERFORMANCE_CONFIG = {
  // 分页配置
  PAGINATION: {
    DEFAULT_PAGE_SIZE: 20,
    MAX_PAGE_SIZE: 100,
    PREFETCH_PAGES: 1,    // 预加载页数
  },
  
  // 缓存配置
  CACHE: {
    TTL: 300000,          // 缓存时间 5分钟
    MAX_SIZE: 50,         // 最大缓存条目数
  }
} as const;

// 🎨 UI配置
export const UI_CONFIG = {
  // 主题配置
  THEME: {
    PRIMARY_COLOR: '#409eff',
    SUCCESS_COLOR: '#67c23a',
    WARNING_COLOR: '#e6a23c',
    ERROR_COLOR: '#f56c6c',
  },
  
  // 动画配置
  ANIMATION: {
    DURATION: 300,        // 动画持续时间
    EASING: 'ease-in-out', // 动画缓动
  }
} as const;

// 🔍 智能网络检测函数
export function getApiBaseUrl(): string {
  const currentHost = window.location.hostname;
  const primaryPort = NETWORK_CONFIG.BACKEND_PORTS.PRIMARY;
  
  console.log(`🌐 当前访问地址: ${currentHost}`);
  
  // 🚀 统一网络检测逻辑 - 所有环境都使用主端口
  if (currentHost === 'localhost' || currentHost === '127.0.0.1') {
    console.log(`📡 本地环境: 127.0.0.1:${primaryPort}`);
    return `http://127.0.0.1:${primaryPort}/api`;
  } else if (currentHost.startsWith('192.168.')) {
    console.log(`📡 内网环境: ${currentHost}:${primaryPort}`);
    return `http://${currentHost}:${primaryPort}/api`;
  } else {
    console.log(`📡 其他环境: ${currentHost}:${primaryPort}`);
    return `http://${currentHost}:${primaryPort}/api`;
  }
}

// 🔒 配置验证函数
export function validateConfig(): boolean {
  try {
    // 验证端口配置
    if (!NETWORK_CONFIG.BACKEND_PORTS.PRIMARY || !NETWORK_CONFIG.FRONTEND_PORT) {
      console.error('❌ 端口配置无效');
      return false;
    }
    
    // 验证超时配置
    if (NETWORK_CONFIG.TIMEOUT.CONNECTION <= 0 || NETWORK_CONFIG.TIMEOUT.REQUEST <= 0) {
      console.error('❌ 超时配置无效');
      return false;
    }
    
    console.log('✅ 配置验证通过');
    return true;
  } catch (error) {
    console.error('❌ 配置验证失败:', error);
    return false;
  }
}

// 📝 配置变更日志
export const CONFIG_CHANGELOG = [
  {
    version: '1.0.0',
    date: '2025-08-11',
    changes: [
      '创建统一配置管理系统',
      '集中管理网络配置',
      '添加功能开关控制',
      '实现配置验证机制'
    ]
  }
] as const;

// 🚀 导出默认配置
export default {
  NETWORK_CONFIG,
  FEATURE_FLAGS,
  DEV_CONFIG,
  SECURITY_CONFIG,
  PERFORMANCE_CONFIG,
  UI_CONFIG,
  getApiBaseUrl,
  validateConfig,
  CONFIG_CHANGELOG
} as const;
